home *** CD-ROM | disk | FTP | other *** search
/ Night Owl 9 / Night Owl CD-ROM (NOPV9) (Night Owl Publisher) (1993).ISO / 010a / apop.zip / AC_OPT.PRG next >
Text File  |  1993-04-24  |  4KB  |  85 lines

  1. ************************************************************************
  2. *     PROGRAM: AC_OPT.PRG                                              *
  3. *     WRITTEN BY: KRAIG W. KRIST/T BEAR COMPUTER SERVICES.             *
  4. *     DATE: APRIL 1993.                                                *
  5. *     DESCRIPTION: ACHOICE FUNCTION PROCESSOR.                         *
  6. ************************************************************************
  7. *             ---- MODIFICATION LOG ----
  8. *  WHEN:
  9. *   WHY:
  10. ************************************************************************
  11. *
  12. * CALLED BY: AUTOMATICALLY TO ACHOICE
  13. *   PASSED FROM ACHOICE: MODE, CUR_ELEM, REL_POS, nWBOTTOM (PRIVATE)
  14. *   RETURNS TO ACHOICE: SUBSCRIPT VALUE COORESPONDING TO SELECTED VALUE
  15. *
  16. * CALLS: SCROLBAR
  17. *   PASSES TO SCROLBAR: CURRENT ELEMENT, ARRAY SIZE
  18. *   RETURNED FROM SCROLBAR: NOTHING
  19. *
  20. ************************************************************************
  21. #INCLUDE "ACHOICE.CH"
  22. #INCLUDE "INKEY.CH"
  23. FUNCTION AC_OPT(MODE, CUR_ELEM, REL_POS)
  24. ************************************************************************
  25. *   DEFINE VARIABLES
  26. ************************************************************************
  27.   MEMVAR nCENTER, nARR_SIZE, nWBOTTOM, aScrollBar, nWTOP
  28.   LOCAL GETLIST := {}
  29.   LOCAL cOLDCOLOR := SPACE(19)
  30.   LOCAL cRET_VAL, cLKEY
  31. ************************************************************************
  32. *     ISSUE APPROPRIATE TOP OF WINDOW MESSAGE.                         *
  33. ************************************************************************
  34.   IF CUR_ELEM > (REL_POS + 1)
  35.     @ nWTOP,nCENTER SAY ' More ' + CHR(24) + ' '
  36.   ELSE
  37.     @ nWTOP,nCENTER SAY '  Top  '
  38.   ENDIF
  39. ************************************************************************
  40. *     ISSUE APPROPRIATE BOTTOM OF WINDOW MESSAGE.                      *
  41. ************************************************************************
  42.   IF (CUR_ELEM - REL_POS + 1) <= nARR_SIZE - (nWBOTTOM - nWTOP - 2)
  43.     @ nWBOTTOM,nCENTER SAY ' More ' + CHR(25) + ' '
  44.   ELSE
  45.     @ nWBOTTOM,nCENTER SAY ' Bottom '
  46.   ENDIF
  47. ************************************************************************
  48. *     UPDATE ScrollBar
  49. ************************************************************************
  50.   ScrollBarUpdate(CUR_ELEM,nARR_SIZE)
  51.   SETCOLOR(cOLDCOLOR)
  52. ************************************************************************
  53. *     DETERMINE SELECTION.                                             *
  54. ************************************************************************
  55.   DO CASE
  56.     CASE MODE = AC_EXCEPT
  57.       cLKEY := LASTKEY()
  58.       DO CASE
  59.         CASE cLKEY = K_ENTER
  60. ************************************************************************
  61. *     RETURN PRESSED -- A PLAYER NAME WAS SELECTED.                    *
  62. ************************************************************************
  63.           cRET_VAL := AC_SELECT
  64.         CASE cLKEY = K_ESC
  65. ************************************************************************
  66. *     ESCAPE PRESSED -- GET OUT.                                       *
  67. ************************************************************************
  68.           cRET_VAL := AC_ABORT
  69.         CASE UPPER(CHR(cLKEY)) $ 'ABCDEFGHIJKLMNOPQRSTUVWXYZ'
  70. ************************************************************************
  71. *     MOVE HIGHLIGHT BAR TO THE NEXT PROMPT WHOSE 1ST CHARACTER MATCHES
  72. * THE LAST KEYSTROKE ENTERED.
  73. ************************************************************************
  74.           cRET_VAL := AC_GOTO
  75.         OTHERWISE
  76. ************************************************************************
  77. *     CONTINUE.
  78. ************************************************************************
  79.           cRET_VAL := AC_CONT
  80.       ENDCASE
  81.     OTHERWISE
  82.     cRET_VAL := AC_CONT
  83.   ENDCASE
  84. RETURN(cRET_VAL)
  85.